package com.my.test.design.factory;

//实现接口alt+insert
//main函数 输入: psvm 回车
//for循环 输入：fori 回车
//System.out.println()快捷键 输入：sout 回车
//try catch ->ctrl+alt+t
// mysql 密码 admin
public class Test {

    public static void main(String[] args) throws InstantiationException, IllegalAccessException {
        // 简单静态工厂模式(if-else-if)
        Factory f = new Factory();
        Product p1 = f.createProduct1("a");
        p1.say();
        Product p2 = f.createProduct2(ProductB.class);
        p2.say();
        Product p3 = f.createProduct3(ProductB.class);
        p3.say();
        Product p4 = f.createProduct4(ProductB.class);
        p4.say();
        System.out.println("---------------------");

        // 工厂方法模式(工厂A创建产品A，工厂B创建产品B，对应的工厂生产对应的产品避免的if-else-if)
        AbstractFactory afa = new FactoryA();
        Product pa = afa.creataProduct();
        pa.say();
        System.out.println("---------------------");

        // 抽象工厂模式(工厂可以实现各种产品，可以是A、可以是B)
        AbstractFactory2 afs = new AbstractFactory2Impl();
        afs.createProductaA();
        afs.createProductaB();
    }

}
